/**
 * 
 */
package info.sswap.ontologies.modularity.repo;

import info.sswap.ontologies.modularity.Module;
import info.sswap.ontologies.modularity.ModuleExtractor;

import java.net.URI;
import java.util.Collection;

import uk.ac.manchester.cs.owlapi.modularity.ModuleType;

/**
 * Interface for entries stored in the ontology repository
 * 
 * @author Pavel Klinov
 *
 */
public interface RepositoryEntry {

	public URI getURI();
	/*
	 * Retrieves a module extractor for a specific entry in the repository
	 */
	public ModuleExtractor getModuleExtractor(ModuleType modType) throws OntologyRepositoryException;	
	/*
	 * Implementations are free to decide which terms are related to the given term.
	 * Normally, this should be the signature of all axioms in which the term appears.
	 * Module extractors may use this method to expand the seed signature before doing ME.  
	 */	
	public Collection<URI> getRelatedTerms(URI termURI) throws OntologyRepositoryException;	
	/*
	 * Same as above but returns axioms, not terms
	 */
	public Module getAxiomsForTerm(URI termURI) throws OntologyRepositoryException;
	
	public void close();
}
